sgsR - Structurally Guided SamplingTristan Goodbody, Nicholas Coops, Martin Queinnec, Joanne White, Piotr Tompalski, Andrew Hudak, David Auty, Ruben Valbuena, Antoine LeBoeuf, Ian Sinclair, Grant McCartney, Jean-Francois Prieur, Murray Woods
University of British Columbia
September 2nd, 2022 @ Berlin
sgsR is an R-package developed to implement structurally guided sampling approaches for enhanced forest inventories.sgsR stands for structurally guided sampling implemented in R
Provides stratification and sampling algorithms to guide primarily model-based sampling approaches
Funded by the Canadian Wood Fibre Centre
Brief inventory and sampling overview
Discuss using auxiliary variables within sampling frameworks
Structurally guided sampling using Airborne Laser Scanning
sgsR overview
Programmatic examples of the package
Purpose: Obtain knowledge about the population (forest area) under investigation and provide estimates of specific target variables.
Needed information: Defined by the scope & scale of the inventory. Answered by questions like:
Who/what is the information for? (e.g. Reporting obligations, timber production)
How big of an area are we inventorying? (e.g. National level, operational level)
Mensuration is a cornerstone of forest management.
Sampling can be:
Labour intensive
Logistically challenging
Expensive
Randomized
Probability of sampling each unit is equal, known, or can be known
Different methods exist (e.g. simple random, systematic)
Imagery (satellite, airborne, drone)
Feature-based inventories
ALS metrics (height, cover, variability)
“Our results highlight that LiDAR data integrated with field data sampling designs can provide broad-scale assessments of vegetation structure and biomass, i.e., information crucial for carbon and biodiversity science.” (Hawbaker et al., 2009)
“The ALS data also provides an excellent source of prior information that may be used in the design phase of the field survey to reduce the size of the field data set.” (Gobakken et al., 2013)
#--- perform stratification ---#
sraster <- strat_quantiles(mraster = mr$zq90, # p90
nStrata = 5) # 5 strata in p90#--- perform dual metric stratification ---#
sraster <- strat_quantiles(mraster = mr$zq90, # p90
mraster2 = mr$zsd, # standard deviation of height
nStrata = 10, # 10 strata in p90
nStrata2 = 3) # 3 strata in zsd#--- perform stratification ---#
sraster <- strat_quantiles(mraster = mr$zq90, # p90
mraster2 = mr$zsd, # standard deviation of height
nStrata = 10, # 10 strata in p90
nStrata2 = 3) # 3 strata in zsd
#--- structurally guided stratified sampling ---#
sample_strat(sraster = sraster, nSamp = 100, plot = TRUE)sgsRsgsR purpose sgsR is a toolbox for practitioners to leverage these benefits to provide primarily model-based sampling approaches for forest inventories that are.
Transparent
Repeatable
Tuneable
Spatially-explicit
sgsR was built using the terra, sf, & tidyverse packages
There are 4 primary function verbs that sgsR uses:
strat_* - apply stratification to metrics raster (mraster) and output a stratified raster (sraster)
sample_* - allocate samples using srasters produced from strat_* functions.
calculate_*- calculate sample information or create useful intermediary sampling products.
extract_* - extract pixels values from rasters to samples
sgsR overview
1️⃣ Read in some ALS metrics
1️⃣ Read in some ALS metrics
#--- Stratification ---#
#--- Load ALS metrics from sgsR internal data ---#
r <- system.file("extdata", "mraster.tif", package = "sgsR")
#--- Read ALS metrics using the terra package ---#
mraster <- terra::rast(r)2️⃣ Read in a linear road access network.
#--- Load access network from sgsR internal data ---#
a <- system.file("extdata", "access.shp", package = "sgsR")
#--- load the access vector using the sf package ---#
access <- sf::st_read(a)3️⃣ Stratify p90 in to 4 strata based on quantiles.
#--- perform stratification ---#
sraster <- strat_quantiles(mraster = mraster$zq90, # input ALS metric - p90
nStrata = 4) # desired number of strata (4)4️⃣ Now lets use the sraster output.
5️⃣ Request 100 proportionally allocated samples.
6️⃣ Bring in the access road.
7️⃣ Specify we dont want samples within 50 m of access.
8️⃣ Or further than 400 m from access.
Mapped result (A) and plotted result (B).
Note buffered access in A. Points are samples in both A & B.
access its important to make sure that you’re still sampling the entire distribution of metrics.existing sampleexisting sample“I have an existing sample network, can I use those same sample locations?”
“If I go and visit those same sample units, where should I locate new samples for structural representation?”
existing sampleLets create an existing sample of 50 plots using simple random sampling (sample_srs).
We are assuming these have been measured or used previously and can be revisited.
existing sampleAdapted Hypercube Evaluation of a Legacy Sample (AHELS) (Malone, Minansy & Brungard, 2019).
sample_ahels() works by:
Determining representation of existing sample.
Generate quantile and covariance matrix of ALS metrics.
Determining number of additional samples that can / need to be added
Identify where new samples are needed to balance quantile density and sampling density.
Iteratively locate samples.
existing sample1️⃣ We have our existing sample
existing sample2️⃣ Now we can use the sample_ahels() algorithm with our ALS metrics.
existing sample3️⃣ Specify our existing sample.
existing sample4️⃣ And specify we want 50 new sample units (nSamp).
existing sampleMapped result (A) and plotted result (B).
Note ratios (black/red) and additional added samples e.g n = 2 for each stratum.
sample_ahels() resultexisting only (A) and addition of new samples (B).
We see that metric and sample density become quite even - structurally representative.
sgsR package provides many methods to implement SGS approaches.sgsR functionality.Special thanks to the Canadian Wood Fibre Centre for funding this research!
My Twitter: @GoodbodyT
IRSS Twitter: @IRSS_UBC
Collaborators